第一天 作業系統簡介
作業系統(OS ,Operating System)控制電腦運作的每個環節,是電腦軟體中最重要的部分,簡單來說作業系統就是電腦的總管。作業系統對使用者來說,在執行程式或解決問題上更簡單,而對電腦系統來講方便運用,在硬體方面有效的管理。所以作業系統在做的事情,會因為環境不同而不同。
那作業系統的定義呢?其實作業系統並沒有一個普遍的定義,作業系統主要做資源分配及資源控制,「一個程式在電腦上一直執行」是作業系統的核心。
那作業系統是一開始就執行的嗎?其實在開始前,要由一個引導程式(bootstrap program)來幫忙,因為作業系統多數都寫在硬碟上或是ROM(Read Only Memory)上。當電腦開機時,bootstrap program就會去把作業系統的核心載下來,才開始執行。
作業系統的結構主要觀念為multiprogramming(Batch system)跟timesharing(multitasking)。Multiprogramming在記憶體內擺多個工作,再由排程來決定順序; Timesharing通常會加上交談式的運算後會產生需求,像是回應時間需小於一秒。在此作業系統關心在記憶體內聯繫到哪些資源,每個使用者在程式正在執行時用到的記憶體內,變成一個行程(process)。
作業系統的動作有兩個很重要,一個是中斷驅動(interrupt driven),一個是雙模式(due mode)。作業系統可以說是由中斷來主導,而雙模式是為了保護本身跟系統元件,分為使用者模式跟kernel模式,透過mode bit來判斷現在是那個模式,有些特別的指令是只能在kernel mode內執行,而兩個模式的轉換是透過system call。
作業系統有四個主要功能:
1.行程管理(Processor Management) 2.記憶體管理(Memory Management) 3.儲存管理(Storage Management)4.保護及安全(Protection and Security) 以上的四種功能之後皆會再深入了解。
作業系統核心的資料結構運用多種模式,singly linked list、doubly linked list、circular linked list、binary tree及hash function,以上資料結構就不多做敘述。
在早期的時候,作業系統的原始碼並不開放,直到Free Software Foundation(FSF)才開始,透過license copyleft來用,最重要的license是GNU Public License(GPL) 。